//
//  AiTTSEngine.h
//  AiEngine2
//
//  Created by Midfar Sun on 12/27/12.
//  Copyright (c) 2012 Midfar Sun. All rights reserved.
//

/**
 * 思必驰语音合成引擎
 * <p/>
 * 实例:<br>
 * 使用云端合成
 * <pre>
 *    ...
 *    AiEngineConfig *engineCfg = [[AiEngineConfig alloc] init];            //创建全局配置参数对象
 *    [engineCfg setAppKey:xxx];                                            // 设置应用账号
 *    [engineCfg setAppSecretKey:xxx];                                      // 设置应用密码
 *    engine = [[AiTTSEngine alloc] initWithConfig:engineCfg];              //创建思必驰语音合成引擎并设置回调
 *    TTSParams *param = [[TTSParams alloc] init];                          //创建合成参数
 *    [param setReqRefText:xxx];                                            //设置请求的待合成文本
 *    ...
 *    [engine startTTS:param];                                              //开始合成引擎
 * </pre>
 *
 * 使用本地合成
 * <pre>
 *    ...
 *    AiEngineConfig *engineCfg = [[AiEngineConfig alloc] init];            //创建全局配置参数对象
 *    [engineCfg setAppKey:xxx];                                            // 设置应用账号
 *    [engineCfg setAppSecretKey:xxx];                                      // 设置应用密码
 *    LocalTTSConfig *localCfg = [[LocalTTSConfig alloc] init];             //创建本地配置
 *    [AIUtil copyResource:xxx unzip:xxx] ;
 *    [localCfg setResDir:xxx] ;
 *    [localCfg setResBinFile:xxx] ;
 *    [engineCfg setNativeConfig:localCfg];
 *    engine = [[AiTTSEngine alloc] initWithConfig:engineCfg];              //创建思必驰语音合成引擎并设置回调
 *    TTSParams *param = [[TTSParams alloc] init];                          //创建合成参数
 *    [param setType:TYPE_NATIVE];                                          //设置为使用本地服务
 *    [param setReqRefText:xxx];                                            //设置请求的待合成文本
 *
 *    ...
 *    [engine startTTS:param];                                              //开始合成引擎
 * </pre>
 */

#import <Foundation/Foundation.h>
#import "AiTTSEngineDelegate.h"
#import "AiEngineConfig.h"
#import "TTSParams.h"

@interface AiTTSEngine : NSObject

typedef enum {
    IDLE ,
    PAUSE ,
    STOP ,
} STATE;

/**
 *	@brief	事件委托
 */
@property(nonatomic, assign) id<AiTTSEngineDelegate> delegate;

/**
 *	@brief	标签，用户自定义
 */
@property(nonatomic, assign) int tag;

/**
 *	@brief	初始化合成引擎
 *
 *	@param 	engineCfg 	
 *
 *	@return	返回合成引擎对象
 */
- (id)initWithConfig:(AiEngineConfig *)engineCfg;

/**
 *	@brief	初始化合成引擎
 *
 *	@param 	engineCfg
 *
 *	@param 	autoPlay 自动播放标志位, YES:边合成边播放 NO:只合成不播放(可选,默认为YES) 
 *
 *	@return	返回合成引擎对象
 */
- (id)initWithConfig:(AiEngineConfig *)engineCfg autoPlay:(BOOL)autoPlay ;

/**
 *	@brief	开始合成引擎
 *
 *	@param 	engineParams 	引擎参数
 *
 *	@return	返回函数执行状态码（0为成功）
 */
- (OSStatus)startTTS:(TTSParams *)engineParams ;

/**
 *	@brief	停止合成引擎
 *
 *	@return	返回函数执行状态码（0为成功）
 */
- (OSStatus)stopTTS;

/**
 *	@brief	暂停合成引擎
 *
 *	@return	返回函数执行状态码（0为成功）
 */
- (OSStatus)pauseTTS;
/**
 *	@brief	继续合成引擎
 *
 *	@return	返回函数执行状态码（0为成功）
 */
- (OSStatus)continueTTS;
/**
 *	@brief	合成引擎状态
 *
 *	@return	返回合成引擎当前所处状态
 */
- (STATE) playState ;


/**
 *	@brief	取消合成引擎
 */
- (void)cancel;



@end
